/*
* ============================================================================
*  Name        : sea_defines.h
*  Part of     : Finite state machine framework
*  Description : place to define permanent MACROs
*  Version     : %version: %
*  
*
* ============================================================================
*/
#if !defined( __sea_define_h__ )
#define __sea_define_h__

/**
 * @file sea_defines.h
 *
 * @ingroup StateMachineFramework
 */

namespace sea
{
    /**
     * Disable throwing the exception
     */
    #define NOTHROW throw( )

    #if defined( DEBUG )
        #define NEW new( __LINE__, __FILE__ )
        #define NEWA new[ ]( __LINE__, __FILE__ )
    #else
        #define NEW new
        #define NEWA new[ ]
    #endif

    /**
     * Eliminate warnings 
     */
    #define SEA_UNUSED( x ) ( void )x 
    #define SEA_UNUSED_PARAM( ) ( void )ACT_EVENT_PARAM( )

    /**
     * Unify debug macro
     */
    #if defined(_DEBUG ) || defined( _DEBUG_ ) || defined( __DEBUG__ ) || defined( DEBUG )
        #undef DEBUG
        #define DEBUG
    #endif

    /**
     * Mosty for linux to help debugging
     */
    #if defined( DEBUG )
        #define SEA_INLINE
        #define SEA_MEM_LEAKS( ) sea::MemoryBlock::print_stats( )
    #else
        #define SEA_INLINE inline
        #define SEA_MEM_LEAKS( )
    #endif
}

#endif // !defined( __sea_define_h__ )
